OBEX (object exchange) is a compact binary protocol that enables data exchange. It was originally developed by the Infrared Device Association (IrDA) for infrared communication but it can be used with other transport mechanisms. OBEX performs a function similar to HTTP but is less resource intensive.
An OBEX client is a device that initiates a connection to an OBEX server. An OBEX server is a device that listens for incoming connections from a client. Data is exchanged by pushing data from the client to the server or by pulling data from the server to the client. Pushing is accomplished with a Put command and pulling is accomplished with a Get command.
OBEX is optimized for ad-hoc wireless links but can be used to exchange all kind of data objects like files, pictures, calendar entries (vCalendar) and business cards (vCard). vCal is an Internet Mail Consortium (IMC) standard that defines a transport- and platform-independent format for exchanging calendar and schedule information. vCard is an IMC standard defining the format of an electronic business card. All devices supporting vCard can exchange information such as phone numbers and addresses.
At present OBEX allows a particular vCard to be pulled by a client from a server by using a GET command that specifies the identity of the VCARD. For example, the first entry in a mobile phone phonebook may be obtained by sending the command OBEX_GET (NAME=‘/file/telecom/pb/0.vcf’) and the n+1 th phonebook entry can be obtained by sending the command OBEX_GET (NAME=‘/file/telecom/pb/n.vcf’). The NAME header specifies the location of the file that is being pulled.
However, a problem arises if the client does not know the number of the desired phone book entry. If the number is not known, the NAME header cannot be correctly composed and the desired entry cannot be retrieved. It may be possible to pull all the phonebook entries, however, this may take a considerable time.
It would therefore be desirable to allow an OBEX client to retrieve a desired data object from a server without specifying the filename of the object.
It would in particular be desirable to allow an OBEX client to retrieve a desired data object from an OBEX server by specifying an alphanumeric string contained within the object.